#ifndef OBJECTSLOADER_H
#define OBJECTSLOADER_H

#include <QObject>
#include <QMap>
#include <QFile>
#include <QDir>
#include <QtXml/qdom.h>

#include "appsettings.h"

struct ObjectConfig
{
    QString className;
    QString fileName;
    QString category;
};

class ObjectsLoader
{
private:
    ObjectsLoader();
    ObjectsLoader(const ObjectsLoader& instantiator);
    /*
     * Словарь { alias : objectConfig }
     * Содержит псевдонимы элементов и сведения об их классе и файле конфигурации
     */
    QMap<QString,ObjectConfig> objects;

    static ObjectsLoader instance;

    ObjectConfig buildConfig(QString fileName);

public:
    // Получить список конфигураций элементов
    QMap<QString,ObjectConfig>& getConfigs();

    // Получить конфигурацию элемента по псевдониму
    ObjectConfig getConfig(QString alias);

    // Получить путь к конфигурации по имени класса
    QString getConfigPath(QString className);

    // Собрать информацию о доступных элементах
    void scanConfigs();

    //Получить экземпляр загрузчика объектов
    static ObjectsLoader& getInstance();
};

#endif // OBJECTSLOADER_H
